package com.zyf.chapter02.structure.adapter.example1;

/**
 * 封装有缺陷的接口设计
 * <pre>
 * 这里小争哥使用的是类适配器，但是这样就无法使用语法 <code>super.staticFunction1();</code>
 * 且 CD 和 ITarget 接口定义都不太相同（方法名的区别），所以这里我改成了对象适配器
 * </pre>
 * @author yifeng
 */
public class CDAdaptor implements ITarget {
    private CD cd;

    public CDAdaptor(CD cd) {
        this.cd = cd;
    }

    @Override
    public void function1() {
        CD.staticFunction1();
    }

    @Override
    public void function2() {
        cd.uglyNamingFunction2();
    }

    @Override
    public void function3(ParamsWrapperDefinition paramsWrapper) {
        cd.tooManyParamsFunction3(
                paramsWrapper.getParamA(), paramsWrapper.getParamB());
    }

    @Override
    public void function4() {
        // reimplement it ...
    }
}
